package taweb.flex.air.fexBrowser.util
{

	public class Tools
	{
		public function Tools()
		{
		}
		
		/**
		 * Supprime les caractères blanc au début et à la fin d'une chaîne de caractères. 
		 * @param s La chaîne de caractères à nettoyer.
		 * @return La chaîne de caractère nettoyée.
		 */
		public static function trim(s:String):String
		{
			return s ? s.replace(/^\s+|\s+$/gs, '') : s;
		}
		
		/**
		 * Vérifie si une chaîne de caractères ne contient pas des balises.
		 * @param content La chaîne de caractères à vérifier.
		 * @return <i>true</i> si elle ne contient une balise, <i>false</i> sinon.
		 */
		public static function isSimpleContent(content:String):Boolean
		{
			var ltExpr:RegExp = new RegExp('<',"g");
			return content.search(ltExpr) == -1;
		}
		
		/**
		 * Extrait toutes les occurences d'une balise.
		 * @param htmlCode Le code HTML .
		 * @param tagName Le nom de la balise à extraire.
		 * @return Toutes les occurences de la balise demandée.
		 */
		public static function extractTag(htmlCode:String, tagName:String):Array
		{
			var patternTag:RegExp = new RegExp('<' + tagName + '[^>]*>', "gi");
			return htmlCode.match(patternTag);
		}
		
		/**
		 * Retourne la valeur d'un attribut à partir du code d'une balise.
		 * @param tagCode Le code de la balise.
		 * @param attributeName Le nom de l'attribut.
		 * @return La valeur de l'attribut.
		 */
		public static function getAttributeValue(tagCode:String, attributeName:String):String
		{
			var valueResult:String = "";
			var attributeSize:int = attributeName.length;
			
			var posAttributeBegin:int = tagCode.indexOf(attributeName + '="');
			if(posAttributeBegin != -1)
			{
				posAttributeBegin += attributeSize + 2; // 2: ="
				
				var posAttributeEnd:int = tagCode.indexOf('"', posAttributeBegin);
				
				if(posAttributeEnd != -1)
				{
					valueResult = tagCode.substring(posAttributeBegin, posAttributeEnd);
				}
			}
			
			return valueResult;
		}
		
		/**
		 * Retourne un string contenant le code d'une couleur en hexadecimal.
		 * @return String avec code couleur.
		 */
		public static function getRandomColor():String{
			var tab:Array = new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F");
			
			var couleur:String ="0x";
			
			for(var i=0;i<6;i++){
				
				couleur+=tab[Math.floor(Math.random()*16)];
				
			}
			return couleur;
		}
		
	}
}